from django.db import models


# Create your models here.
class Area(models.Model):
    """
    行政区划
    """
    name = models.CharField(max_length=20, verbose_name="名称")
    # 自关联字段　partent
    # on_delete=models.SET_NULL ---当主表数据删除，与之关联的多个从表数据的外键字段设置为ＮＵＬＬ
    # null=True -- 允许设置为空，对应Ｎｏｎｅ
    # blank=True -- 允许设置为空（空白字符，不可见字符，如字符串 "    "）
    # related_name = "subs" -- 在主表模型类中设置关联隐藏字段，用来记录关联的从表的多条数据
    parent = models.ForeignKey('self', on_delete=models.SET_NULL,
                               related_name="subs", null=True, blank=True, verbose_name="上级行政区划")
    # 隐藏字段
    # subs = <当前主表对象，关联的多个从表对象>
    # 通过related_name设置的隐藏字段"subs"来获取子级行政区多个对象
    # p = Area.objects.get(name="广东省")  # 一级行政区，省对象
    # p.subs.all()  # 通过省对象的隐藏字段“subs”获取与当前省关联的子级行政区市的多条对象数据

    # 我们先获取市级:
    # area = Area.objects.get(id='20010')
    # 由市查省, 由多查1:  多对象.外键关联属性
    # 查询南京市的上级省信息
    # area.parent
    # 查询南京市下面的地区:
    # area.area_set.all()  #area.subs.all()

    class Meta:
        db_table = "tb_areas"

    def __str__(self):
        return self.name






